package dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import model.*;

public class AlquilerTipoDao extends BaseDao {
	private ResultSet alquilerTipoResult;
	private static AlquilerTipoDao alquilerTipoDao=null;
	private List<AlquilerTipo> alquilerTipos;

	private AlquilerTipoDao(){}
	public static AlquilerTipoDao getAlquilerTipoDao(){
		if (alquilerTipoDao == null) {
			alquilerTipoDao = new AlquilerTipoDao();
			}
			return alquilerTipoDao;
	}
	@Override
	public List<AlquilerTipo> listar() {
		// TODO Auto-generated method stub
		ArrayList<AlquilerTipo> list=new ArrayList<AlquilerTipo>();
		try {
			String sqlSent="SELECT * FROM `alquilerTipo` ORDER BY nombre";
			alquilerTipoResult=consultar(sqlSent);
			while(alquilerTipoResult.next()){
				AlquilerTipo alquilerTipo=new AlquilerTipo(
					alquilerTipoResult.getInt("id"),
					alquilerTipoResult.getString("nombre"),
					alquilerTipoResult.getDouble("precio"),
					alquilerTipoResult.getInt("diasPrestamo")
				);
				list.add(alquilerTipo);
			}
			desconectar();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		alquilerTipos=list;
		return alquilerTipos;
	}

	@Override
	public AlquilerTipo buscar(Integer id) {
		// TODO Auto-generated method stub
		try {
			String sqlSent="SELECT * FROM `alquilerTipo` WHERE id="+id;
			alquilerTipoResult=consultar(sqlSent);
			if(alquilerTipoResult.next()){
				AlquilerTipo alquilerTipo=new AlquilerTipo(
						alquilerTipoResult.getInt("id"),
						alquilerTipoResult.getString("nombre"),
						alquilerTipoResult.getDouble("precio"),
						alquilerTipoResult.getInt("diasPrestamo")
					);
				return alquilerTipo;
			}else{
				AlquilerTipo alquilerTipo=null;
				return alquilerTipo;
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			AlquilerTipo alquilerTipo=null;
			return alquilerTipo;
		}
	}

	@Override
	public void guardar(Object alquilerTipo)throws SQLException {
		// TODO Auto-generated method stub
		String sqlSent="INSERT INTO `alquilerTipo` (`nombre`,`precio`,`diasPrestamo`) VALUES ('"+
							((AlquilerTipo) alquilerTipo).getDiasPrestamo()+"'," +
							((AlquilerTipo) alquilerTipo).getPrecio()+",'" +
							((AlquilerTipo) alquilerTipo).getDiasPrestamo()+"')";
		try {
			modificar(sqlSent);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new SQLException("Error al guardar el tipo de alquier");
		}
	}

	@Override
	public void eliminar(Integer id)throws SQLException {
		// TODO Auto-generated method stub
		String sqlSent="DELETE FROM `alquilerTipo` WHERE id="+id;
		try {
			modificar(sqlSent);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new SQLException("Error al borrar el tipo de alquier");
		}
	}

	@Override
	public void modificar(Object alquilerTipo)throws SQLException {
		// TODO Auto-generated method stub
		String sqlSent="UPDATE `alquilerTipo` SET" +
				" nombre='"+((AlquilerTipo) alquilerTipo).getDiasPrestamo()+"',"+
				" precio="+((AlquilerTipo) alquilerTipo).getPrecio()+
				" diasPrestamo='"+((AlquilerTipo) alquilerTipo).getDiasPrestamo()+
				" WHERE id="+((AlquilerTipo) alquilerTipo).getId();
		try {
			modificar(sqlSent);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new SQLException("Error al modificar el tipo de alquier");
		}
	}

}
